using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

public abstract class IStageHandler
{
    protected int mLv; // 当前关卡值
    protected IStageHandler mNextHandler; // 下一个处理者
    private int mCountToFinished; // 当前关卡需要击杀敌人的数量
    protected StageSystem mStageSystem;


    // 构造函数
    public IStageHandler(StageSystem stageSystem, int lv, int countToFinished)
    {
        mStageSystem = stageSystem;
        mLv = lv;
        mCountToFinished = countToFinished;
    }

    // 处理方法
    public void Handle(int level)
    {
        if (level == mLv)
        {
            // 当前责任环节可以处理
            UpdateStage();
            CheckIsFinished(); //检查关卡是否结束
        } else
        {
            // 下一责任环节处理 null
            Debug.Log(mNextHandler);
            mNextHandler.Handle(level);
        }
    }

    protected virtual void UpdateStage() { }

    // 设置下一个处理者, 执行后返回下一个处理者
    public IStageHandler SetNextHandler(IStageHandler nextHandler)
    {
        mNextHandler = nextHandler;
        return mNextHandler;
    }

    private void CheckIsFinished()
    {
        if (mStageSystem.GetCountOfEnemyKilled() >= mCountToFinished)
        {
            mStageSystem.EnterNextStage();
        }
    }
}